package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.print.DocFlavor.STRING;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import modelo.Calendario;
import modelo.Equipo;
import modelo.Liga;

import vista.VistaModeloTablaResultados;
import vista.VistaTablaPosiciones;

public class ControladorVistaTablaPosiciones implements ActionListener {
	private VistaTablaPosiciones ventanaTablaPosiciones;
	private Liga laLiga;

	public ControladorVistaTablaPosiciones(Liga liga) {
		super();
		ventanaTablaPosiciones = new VistaTablaPosiciones();
		ventanaTablaPosiciones.setLocationRelativeTo(null);
		ventanaTablaPosiciones.setVisible(true);
		ventanaTablaPosiciones.agregarListener(this);
		this.laLiga = liga;
		llenarTabla();
	}
	
	public void llenarTabla(){
		ArrayList<Calendario> listaResultadosdeJuegos = laLiga.getCalendario();
		ArrayList<Equipo> listaEquipos = laLiga.getEquipos();
		String[][] datosParaTabla = new String[listaEquipos.size()][];
		String[] datosEquipo = new String[7];
		String[] datosAux = new String[7];
		
		String codEquipo;
		
		for (int i=0; i < listaEquipos.size() ;i++){
			codEquipo = listaEquipos.get(i).getCodigo();
			
			datosEquipo[0]=listaEquipos.get(i).getNombre();
			datosEquipo[1]=String.valueOf(listaEquipos.get(i).getJuegosGanados());
			datosEquipo[2]=String.valueOf(listaEquipos.get(i).getJuegosEmpatados());
			datosEquipo[3]=String.valueOf(listaEquipos.get(i).getJuegosPerdidos());
			datosEquipo[4]=String.valueOf(listaEquipos.get(i).getGolesFavor());
			datosEquipo[5]=String.valueOf(listaEquipos.get(i).getGolesContra());
			datosEquipo[6]=String.valueOf(listaEquipos.get(i).getPuntosAcumulados());
			
			datosParaTabla[i] = datosEquipo.clone();
		}
		
		//PARA ORDENARLO POR PUNTOS
		// ciclo para controlar numero de pasadas
		for (int pasada=1; pasada < datosParaTabla.length;pasada++){
			// ciclo para controlar numero de comparaciones
			for (int elemento = 0; elemento < datosParaTabla.length-1; elemento++) {
            	// comparar elementos uno a uno e intercambiarlos si
            	// el primer elemento es mayor que el segundo
                if (Integer.valueOf(datosParaTabla[elemento][6]) < Integer.valueOf(datosParaTabla[elemento+1][6])) {
                	datosAux = datosParaTabla[elemento];
                	datosParaTabla[elemento] = datosParaTabla[elemento+1];
                	datosParaTabla[elemento+1] = datosAux;
                }
            } // fin del ciclo para controlar las comparaciones			
		}
	
		TableModel tblPosicionesModel = new DefaultTableModel(datosParaTabla,
						new String[] { "Equipo", "JG", "JE", "JP", "GF", "GC", "Puntos" });
		
		ventanaTablaPosiciones.setModeloDeTabla(tblPosicionesModel);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equalsIgnoreCase("Salir")){
			ventanaTablaPosiciones.setVisible(false);
			ventanaTablaPosiciones.dispose();
			
		}
		
	}
	
}
